﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CodeGenLib
{
    public class GenParam
    {
        public GenParam()
        {
            this.bases = new List<String>();
            this.includes = new List<String>();

            this.className = "";
            this.namespaceName = "";
            this.headerGuard = "";
            this.hFilename = "";
            this.cppFilename = "";
        }

        public List<String> Bases
        {
            get { return this.bases; }
        }

        public void AddBases(String baseName)
        {
            this.bases.Add(baseName);
        }

        public void ModifyBases(int index, String baseName)
        {
            this.bases[index] = baseName;
        }

        public List<String> Includes
        {
            get { return this.includes; }
        }

        public void AddInclude(String include)
        {
            this.includes.Add(include);
        }

        public void ModifyInclude(int index, String include)
        {
            this.includes[index] = include;
        }

        public String Namespace
        {
            get { return this.namespaceName; }
            set { this.namespaceName = value; }
        }

        public String Class
        {
            get { return this.className; }
            set { this.className = value; }
        }

        public String HeaderGuard
        {
            get { return this.headerGuard; }
            set { this.headerGuard = value; }
        }

        public String HFilename
        {
            get { return this.hFilename; }
            set { this.hFilename = value; }
        }

        public String CppFilename
        {
            get { return this.cppFilename; }
            set { this.cppFilename = value; }
        }

        private List<String> bases;
        private List<String> includes;
        private String namespaceName;
        private String className;
        private String headerGuard;
        private String hFilename;
        private String cppFilename;
    }
}
